Synthesizing Loops for Program Inversion
نویسندگان
چکیده
We propose a new automatic program inversion method for imperative programs that contain loops. In particular, given a loop that produces an output state given a particular input state, our method can synthesize an inverse loop that reconstructs the input state given the original loop’s output state. The synthesis process consists of two major components: (a) building the inverse loop’s body, and (b) building the inverse loop’s predicate. Our method works for all natural loops, including those that take early exits (e.g., via breaks, gotos, returns). This work extends a program analysis and synthesis framework, called Backstroke, that we developed in prior work.
منابع مشابه
Dynamical Systems for Audio Synthesis: Embracing Nonlinearities and Delay-Free Loops
Many systems featuring nonlinearities and delay-free loops are of interest in digital audio, particularly in virtual analog and physical modeling applications. Many of these systems can be posed as systems of implicitly related ordinary differential equations. Provided each equation in the network is itself an explicit one, straightforward numerical solvers may be employed to compute the output...
متن کاملThe Polyranking Principle
Although every terminating loop has a ranking function, not every loop has a ranking function of a restricted form, such as a lexicographic tuple of polynomials over program variables. The polyranking principle is proposed as a generalization of polynomial ranking for analyzing termination of loops. We define lexicographic polyranking functions in the context of loops with parallel transitions ...
متن کاملAutomatic program synthesis via synthesis
Work on theorem-proving-based automatic program synthesis (see Lee, e t ai.,1 for example) has been neglected iately. In their 1971 paper, Manna and Waldinger8 covered one of the main reasons why-the difficulty of synthesizing program loops within the current state of the art of automatic theorem-proving.· However, there is a great deal of continuing work in theorem-proving, and it is important...
متن کاملA Transformational Approach for Generating Non-linear Invariants
Computing invariants is the key issue in the analysis of infinite-state systems whether analysis means testing, verification or parameter synthesis. In particular, methods that allow to treat combinations of loops are of interest. We present a set of algorithms and methods that can be applied to characterize over-approximations of the set of reachable states of combinations of self-loops. We pr...
متن کاملSynthesizing Invariants by Solving Solvable Loops
When proving invariance properties of a program, we face two problems. The first problem is related to the necessity of proving tautologies of considered assertion language, whereas the second manifests in the need of finding sufficiently strong invariants. This paper focuses on the second problem and describes a new method for the automatic generation of loop invariants that handles polynomial...
متن کامل